﻿/**
 *
 * @file FITKPhyscisPropertyGeneralLaminateIsoLayer.h
 * @brief 自由阻尼板单层信息类定义
 * @author LiBaojun (libaojunqd@foxmail.com)
 * @date 2024-10-18
 *
 */
#ifndef FITK_PHYSCIS_PROPERTY_GENERALLAMINATE_ISOTROPIC_LAYER_H
#define FITK_PHYSCIS_PROPERTY_GENERALLAMINATE_ISOTROPIC_LAYER_H

#include "FITK_Kernel/FITKCore/FITKAbstractDataObject.h"
#include "FITKAcousticsPhysicsAPI.h"

namespace Acoustics
{
    class FITKAcousticsAbsMaterial;
    class FITKAcousticsAbstractSpectra;

    /**
    * @brief 自由阻尼板单层信息数据结构定义
    * @author liuzhiyuan(liuzhiyuan@diso.cn)
    * @date 2024-10-15
    */
    class FITKAcousticsPhysicsAPI FITKPhyscisPropertyGeneralLaminateIsoLayer :
        public Core::FITKAbstractDataObject
    {
        FITKCLASS(Acoustics, FITKPhyscisPropertyGeneralLaminateIsoLayer);
        Q_OBJECT
    public:
    /**
     * @brief Construct a new Physcis Property General Laminate Iso Layer object
     * @author LiBaojun (libaojunqd@foxmail.com)
     * @date 2024-10-24
     */
        explicit FITKPhyscisPropertyGeneralLaminateIsoLayer() = default;
        /**
         * @brief Destroy the Physcis Property General Laminate Iso Layer object
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-24
         */
        virtual ~FITKPhyscisPropertyGeneralLaminateIsoLayer() = default;
        /**
         * @brief 设置材料ID
         * @param[i]  id             材料ID
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-24
         */
        void setMaterialID(const int id);
        /**
         * @brief 获取材料ID
         * @return int
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-24
         */
        int getMaterialID() const;
        /**
         * @brief 获取材料对象
         * @return FITKAcousticsAbsMaterial*
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-24
         */
        FITKAcousticsAbsMaterial* getMaterialObj();
        /**
         * @brief 获取材料名称
         * @return QString
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-24
         */
        QString getMaterialName();
        /**
         * @brief 设置阻尼损耗因子ID
         * @param[i] id 阻尼损耗因子ID
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-24
         */
        void setDLFSplectrumID(const int id);

        /**
         * @brief 获取阻尼损耗因子
         * @return FITKAcousticsAbstractSpectra
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-24
         */
        FITKAcousticsAbstractSpectra* getDLFSplectrumObj();


        /**
         * @brief 获取阻尼损耗因子ID
         * @return int
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-24
         */
        int getDLFSplectrumID() const;


        /**
         * @brief 设置角度
         * @param[i]  angle          角度
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-24
         */
        void setAngle(const double & angle);
        /**
         * @brief 获取角度
         * @return double 
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-24
         */
        double getAngle() const;

        /**
         * @brief 获取厚度
         * @return double
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date 2024-10-15
         */
        double getThickness() const;
        /**
         * @brief 设置厚度
         * @param[i] double 厚度
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date 2024-10-15
         */
        void setThickness(double thickness);

    private:
        /**
         * @brief 材料ID
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-24
         */
        int _materialID{ -1 };
        /**
         * @brief 角度
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-24
         */
        double _angle{ 0.0 };

        /**
         * @brief  厚度
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date   2024-10-15
         */
        double _thickness { 0 };
        /**
         * @brief  阻尼损耗因子ID
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date   2024-10-15
         */
        int _DLFSplectrum{ -1 };
    };
}

#endif // FITKPHYSCISPROPERTYISOTROPIC_H
